home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Media 20
/
PC MEDIA CD20.iso
/
share
/
prog
/
firedemo
/
fire.asm
< prev
next >
Wrap
Assembly Source File
|
1993-05-10
|
7KB
|
202 lines
; ------------------------------ FIRE.ASM ------------------------------
; Bye Jare of VangeliSTeam. Want more comments? Write'em. O:-)
.MODEL SMALL
.STACK 400
DOSSEG
LOCALS
.DATA
FirePal LABEL BYTE
; Fire palette, colors 0-63 ------------
DB 0, 0, 0, 0, 1, 1, 0, 4, 5, 0, 7, 9
DB 0, 8, 11, 0, 9, 12, 15, 6, 8, 25, 4, 4
DB 33, 3, 3, 40, 2, 2, 48, 2, 2, 55, 1, 1
DB 63, 0, 0, 63, 0, 0, 63, 3, 0, 63, 7, 0
DB 63, 10, 0, 63, 13, 0, 63, 16, 0, 63, 20, 0
DB 63, 23, 0, 63, 26, 0, 63, 29, 0, 63, 33, 0
DB 63, 36, 0, 63, 39, 0, 63, 39, 0, 63, 40, 0
DB 63, 40, 0, 63, 41, 0, 63, 42, 0, 63, 42, 0
DB 63, 43, 0, 63, 44, 0, 63, 44, 0, 63, 45, 0
DB 63, 45, 0, 63, 46, 0, 63, 47, 0, 63, 47, 0
DB 63, 48, 0, 63, 49, 0, 63, 49, 0, 63, 50, 0
DB 63, 51, 0, 63, 51, 0, 63, 52, 0, 63, 53, 0
DB 63, 53, 0, 63, 54, 0, 63, 55, 0, 63, 55, 0
DB 63, 56, 0, 63, 57, 0, 63, 57, 0, 63, 58, 0
DB 63, 58, 0, 63, 59, 0, 63, 60, 0, 63, 60, 0
DB 63, 61, 0, 63, 62, 0, 63, 62, 0, 63, 63, 0
ByeMsg DB 'FIRE was coded bye Jare of VangeliSTeam, 9-10/5/93', 13, 10
DB 'Sayonara', 13, 10, 10
DB 'ELYSIUM music composed by Jester of Sanity (an Amiga demo group, I think)', 13, 10
DB 'The music system you''ve just been listening is the VangeliSTracker 1.2b', 13, 10
DB 'VangeliSTracker is Freeware (no money required), and distributed in source code', 13, 10
DB 'If you haven''t got your copy of the VangeliSTracker, please go to your', 13, 10
DB 'nearest BBS and get it NOW', 13, 10
DB 'Also, don''t forget that YOU can join the VangeliSTeam. Contact the', 13, 10
DB 'VangeliSTeam in the following addresses: ', 13, 10, 10
DB ' Mail: VangeliSTeam │ This demo is dedicated to', 13, 10
DB ' Juan Carlos Arévalo Baeza │ Mark J. Cox', 13, 10
DB ' Apdo. de Correos 156.405 │ and', 13, 10
DB ' 28080 - Madrid (Spain) │ Michael Abrash', 13, 10
DB ' Internet: jarevalo@moises.ls.fi.upm.es │ At last, the PC showed good', 13, 10
DB ' Fidonet: 2:341/27.16, 2:341/15.16, 2:341/9.21 │ for something.', 13, 10, 10
DB 'Greetings to all demo groups and MOD dudes around.', 13, 10
DB '$'
UDATASEG
Imagen DB 80*50 DUP (?)
Imagen2 DB 80*50 DUP (?)
.CODE
.STARTUP
CLD
MOV AX,13h
INT 10h
CLI
MOV DX,3c4h
MOV AX,604h ; "Unchain my heart". And my VGA...
OUT DX,AX
MOV AX,0F02h ; All planes
OUT DX,AX
MOV DX,3D4h
MOV AX,14h ; Disable dword mode
OUT DX,AX
MOV AX,0E317h ; Enable byte mode.
OUT DX,AX
MOV AL,9
OUT DX,AL
INC DX
IN AL,DX
AND AL,0E0h ; Duplicate each scan 8 times.
ADD AL,7
OUT DX,AL
MOV DX,3c8h ; Setup palette.
XOR AL,AL
OUT DX,AL
INC DX
MOV CX,64*3
MOV SI,OFFSET FirePal ; Prestored...
@@pl1:
LODSB
OUT DX,AL
LOOP @@pl1
MOV AL,63
MOV CX,192*3 ; And white heat.
@@pl2:
OUT DX,AL
LOOP @@pl2
STI
MOV AX,DS
MOV ES,AX
MOV DI,OFFSET Imagen ; Cleanup both Images.
MOV CX,80*50
XOR AX,AX
REP STOSW
MainLoop:
MOV DX,3DAh ; Retrace sync.
@@vs1:
IN AL,DX
TEST AL,8
JZ @@vs1
@@vs2:
IN AL,DX
TEST AL,8
JNZ @@vs2
PUSH DS
POP ES
MOV SI,81+OFFSET Imagen ; Funny things start here. 8-P
MOV DI,81+OFFSET Imagen2
MOV CX,48*80-2
XOR BH,BH
@@lp:
XOR AX,AX
ADD AL,-1[SI]
ADC AH,BH
ADD AL,-80[SI]
ADC AH,BH
ADD AL,-79[SI]
ADC AH,BH
ADD AL,-81[SI]
ADC AH,BH
ADD AL,1[SI]
ADC AH,BH
ADD AL,80[SI]
ADC AH,BH
ADD AL,79[SI]
ADC AH,BH
ADD AL,81[SI]
ADC AH,BH
ROR AX,1
ROR AX,1
ROR AX,1
TEST AH,60h ; Wanna know why 60h? Me too.
JNZ @@nx ; This is pure experience.
CMP DI,46*80+OFFSET Imagen2 ; And this was a bug.
JNC @@dec ; This one's by my cat.
OR AL,AL ; My dog coded here too.
JZ @@nx ; I helped my sister with this one.
@@dec:
DEC AL ; Yeah! Cool a bit, please.
@@nx:
INC SI
STOSB
LOOP @@lp ; New image stored in Imagen2.
MOV SI,80+OFFSET Imagen2 ; Scrolling copy. :-)
MOV DI,OFFSET Imagen
MOV CX,40*48
REP MOVSW
MOV SI,80*43+OFFSET Imagen2 ; Get rid of some ashes.
MOV CX,6*80
MOV AH,22
@@rcl:
MOV AL,[SI]
CMP AL,15
JNC @@rcn
SUB AL,AH
NEG AL
MOV [SI],AL
@@rcn:
INC SI
LOOP @@rcl
MOV SI,80+OFFSET Imagen2 ; And show it.
MOV DI,0
MOV AX,0A000h
MOV ES,AX
MOV CX,40*48
REP MOVSW
MOV AH,1
INT 16h
JNZ Bye
JMP MainLoop
Bye:
XOR AH,AH
INT 16h
MOV AX,3
INT 10h
MOV DX,OFFSET ByeMsg
MOV AH,9
INT 21h
MOV AX,4C00h
INT 21h
END
; ------------------------------ End of FIRE.ASM ---------------------------